逆向分析LOL网吧特权原理,全英雄+全皮肤400余种!
最近再玩LOL,看到有人在卖网吧特权,然后买过来分析了一下。
这个软件是易语言写的,我真的不敢相信,易语言可以写出这么好看的UI,醉了。
废话不多说,开启特权,然后进游戏。‘
很吊很吊,小白操作,而且进游戏就有,测试完毕,下面进入主题。
今天要做的2件事:
1.探寻原理,模仿制作
2.尝试逆向破解
首先我们做第一项。
这个软件分为2快,第一块是验证程序,第二块就是qqwb_client目录里的QQ网吧客户端。
首先我们查一下软件启动后都干了些什么事。
1. 软件采用UPX的壳,不解释,盘他,脱干净之后干。
UPX0:00401000 ;
UPX0:00401000 ; +-------------------------------------------------------------------------+
UPX0:00401000 ; | This file has been generated by The Interactive Disassembler (IDA) |
UPX0:00401000 ; | Copyright (c) 2017 Hex-Rays, <support@hex-rays.com> |
UPX0:00401000 ; | License info: 48-3FBD-7F04-2C |
UPX0:00401000 ; | Jiang Ying, Personal license |
UPX0:00401000 ; +-------------------------------------------------------------------------+
UPX0:00401000 ;
UPX0:00401000 ; Input SHA256 : 066110744AE7AC7CEA6934AEF5E1C9EC94C01653332B06A9D570F1A78EF2D4CE
UPX0:00401000 ; Input MD5 : 287CC0615662A15F6FF16E9CAF9BE432
UPX0:00401000 ; Input CRC32 : 801BB6D7
UPX0:00401000
UPX0:00401000 ; File Name : C:\Users\苏苏苏苏苏苏\Desktop\新建文件夹 (2)\cooper\Cooper1.exe
UPX0:00401000 ; Format : Portable executable for 80386 (PE)
UPX0:00401000 ; Imagebase : 400000
UPX0:00401000 ; Timestamp : 059BFFA3 (Mon Dec 25 05:33:23 1972)
UPX0:00401000 ; Section 1. (virtual address 00001000)
UPX0:00401000 ; Virtual size : 001B7000 (1798144.)
UPX0:00401000 ; Section size in file : 00000000 ( 0.)
UPX0:00401000 ; Offset to raw data for section: 00000400
{
const CHAR *v0; // eax
HMODULE v1; // eax
LSTATUS v2; // ST14_4
CHAR *v3; // ebx
const CHAR *v4; // eax
FARPROC v5; // eax
void (__cdecl *v6)(signed int); // eax
DWORD cbData; // [esp+8h] [ebp-110h]
HKEY phkResult; // [esp+Ch] [ebp-10Ch]
HMODULE hLibModule; // [esp+10h] [ebp-108h]
CHAR String1[260]; // [esp+14h] [ebp-104h]
sub_4011E4(String1);
v0 = lstrcatA(String1, "krnln.fnr");
v1 = LoadLibraryA(v0);
if ( v1 )
goto LABEL_15;
if ( !RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\FlySky\\E\\Install", 0, 0x20019u, &phkResult) )
{
cbData = 259;
v2 = RegQueryValueExA(phkResult, "Path", 0, 0, (LPBYTE)String1, &cbData);
RegCloseKey(phkResult);
if ( !v2 )
{
v3 = &String1[lstrlenA(String1) - 1];
if ( *v3 != 92 )
*(_WORD *)v3 = 92;
v4 = lstrcatA(String1, "krnln.fne");
v1 = LoadLibraryA(v4);
if ( v1 )
{
LABEL_15:
hLibModule = v1;
v5 = GetProcAddress(v1, "GetNewSock");
if ( v5 )
{
v6 = (void (__cdecl *)(signed int))((int (__stdcall *)(signed int))v5)(1000);
if ( v6 )
{
v6(4206592);
ExitProcess(0);
}
}
FreeLibrary(hLibModule);
}
}
}
MessageBoxA(0, "Not found the kernel library or the kernel library is invalid!", "Error", 0x10u);
return -1;
}
软件的会先加载一个易语言的动态链接库,这个作者采用的是易语言的编译,非静态编译或独立编译。
软件启动后,执行完上面代码,然后会获取本机MAC地址做为登陆账号,然后向服务器发送套接字,服务器会返回一个登陆成功的状态,状态值为100,还会返回一个TickCount,并且把TickCount转换格式。
{"msg":"100","ip":"192.168.3.5","account":"kfP8n6rGpVC2Z+/RLK8U5tRpaw1gaC/6e6HCd1m0IIhGSzxkmG8lHhx37HabnzuHn+84ZMmdN6lKcgvLgHF69Yi8KFQLNVFjiuiwFhvVBVk=","plugin":"11001","socks":"12001","endtime":"1549426581"}
软件接收到以上返回信息,代表登陆成功了,笔者发现这个验证可以很简单的破解,后者比前者要简单的多,但是笔者还是想弄清楚这个软件是如何实现网吧特权的,所以继续探寻原理。
软件运行后接收到服务器登陆成功未到期的消息后会创建进程,创建什么进程呢?是qqwb_client.exe这个。
然后我HOOK了 软件的 Read Write 函数看下他有没有对 qqwb_client.exe 的内存写入或读取什么东西,发现并没有。’
然后我看了下 Q网吧客户端的目录,发现一个非常可疑的模块 privilege_mgr.dll。
其他模块都有腾讯的签名,唯独他没有,而且他加载到 qqwb_client.exe 里面后抹掉了的PE头 ,并且断链(改写LDR),在PChunter里可以看到红名模块。
然后笔者心里有种感觉,这个模块起着非常重要的作用,于是dump下来,脱进IDA,干!
依旧是UPX的壳,脱之!
DLL进入后会执行HOOK,HOOK了哪里呢?经过追踪发现,他HOOK了Sendto函数头,直接ret 0018,让QQ网吧客户端无法调用SendTo。
到这里,大概可以分析出他的流程了,应该是截取QQ网吧客户端要发送的套接字,然后申请内存,把数据保存下来,发送给登陆程序,登陆程序加以修改,再向QQ网吧服务器发送套接字,这是我的猜测,是不是这样,还要等待我下一步证实。
这个DLL通过SendMessage的方式向登陆程序发送消息,如果登陆窗口死了或这不在了,QQ网吧客户端也就自动关闭了。
接下来我们看看套接字里到底有什么东西。
我们发现,登陆程序登陆成功后向QQ网吧服务器POST了一些数据,这些数据是什么数据呢,又是哪里来的呢?
下面继续一探究竟。
1.关闭QQ网吧只开软件->进入游戏没有特权;
2.只开QQ网吧客户端->关闭软件 进入游戏依旧没有特权。
以上2条结论说明,QQ网吧客户端里的那个DLL负责截获一些数据发送给登陆程序,登陆程序加以修整后POST提交到腾讯服务器。
原理已经弄清楚,如果实行起来,我不知道又要搞到猴年马月了,下面尝试破解。
继续上面的图 第一个GET 然后两个POST。
第一个GET 获取当前版本信息,如果是当前版本,则正常运行,不是的话则打开返回数据里面新的软件下载链接。
返回数据如下 :
{"version":"1.7.0.113","update":"https://www.lanzous.com/i2vmctg"}
我们目前又2个办法破解 。
1:OD 直接JMP完事简单方便
2:另类DIY方法(我们今天弄DIY哈哈)
我们直接HEX反汇编,搜索文本 43.248.201.175 找到他服务器的字符串加以修改。
这个是他服务器的IP地址,我们来改成我们自己的。
哈哈,成功,提示有新版本了,我们把后面的也改一下。
伪造一个php文件,让他返回版本信息。
哈哈成功!这个验证,应该是作者自己写的,一点防破解都没有,而且数据不加校验。
只要服务器登陆过你的MAC就可以一直用了,到期了也没事,自己改自己服务器。
然后要用特权的时候,POST一下他的服务器 http://43.248.201.175:15300/speed/cp?mac=你的MAC 就行了。
脱了壳之后想怎么DIY就怎么DIY哈哈,改改标题,改改按钮,改改LOGO,然后再加个验证壳又可以赚一笔了。
笔者只是想分析软件,分析原理,今天就到这吧,写的有点累了,大家又没有好看的电影推荐啊,帮忙推荐下,最近很无聊!
- End -
看雪ID:苏苏苏苏苏苏
https://bbs.pediy.com/user-773537.htm
本文由看雪论坛 苏苏苏苏苏苏 原创
转载请注明来自看雪社区
热门图书推荐:
征题正在火热进行中!
(晋级赛Q1即将于3月10日开启,敬请期待!)
热门文章阅读
热门课程推荐
公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com